In diesem Projekt werden Covid19-Daten aus verschieden Ländern (besonders Italien und Deutschland) verwendet. Mit Hilfe von Datenvisualisierungstechniken werden eigene analytischen Fragen beantwortet. Zuerst werden die Datensatz vorbereitet, dann werden folgende Punkten untersucht:
Die Datenset stammt aus der URL https://raw.githubusercontent.com/datasets/covid-19/master/data/countries-aggregated.csv Die Daten zeigen die Verbreitung von COVID19 vom Pandemiefreien Tag bis Datum. Diese Datenset wird täglisch aktualisiert.
Die Datenset beihaltet 4 Spalten für jedes Land die Zahl der Tote, Infiziert und Genessen, sowie das Datum, wann die Daten aufgenommen wurden.
Um die Fragen zu beantworten, wird in diesen Projekt das Plotly-Modul von Python verwendet, um ein intuitives Diagramm zu erstellen.
Einführung Importieren des Auto-Update-Datasets mit der Github-URL
Erstellen einer Choroplethenkarte, um die globale Ausbreitung des Virus zu visualisieren
Erstellen eines Balkendiagramms zum Vergleich von Ländern hinsichtlich der Intensität der COVID19-Übertragung
Visualisierung der Ausbreitung des Virus vor und nach der Sperrung in Italien
##import von den Module
import pandas as pd
import numpy as np
import plotly.express as px
import matplotlib.pyplot as plt
print('modules sind importiert')
##Dataset Wird geladen
dataset_url = 'https://raw.githubusercontent.com/datasets/covid-19/master/data/countries-aggregated.csv'
df = pd.read_csv(dataset_url)
print('dataset geladen')
##dataframe
df.head()
df.tail()
## shape
df.shape
df.size
Es wird in allen Ländern untersucht, wie viele Menschen infiziert wurden.
Die bestätigte Spalte(Confirmed) wird größer als Null gesetze.
df = df[df.Confirmed > 0]
df.head()
Daten aus Italien
df[df.Country == 'Italy'].head()
Covid19 weltweit Ausbreitung von 2020-02-24 (Alle Fälle, die bestätigt wurden)
fig = px.choropleth(df , locations = 'Country' , locationmode='country names',color='Confirmed'
,animation_frame='Date')
fig.update_layout(title_text = 'Global Spread of COVID-19')
fig.show()
Covid19 weltweit Ausbreitung ein Monat später (Alle Fälle, die bestätigt wurden)
fig = px.choropleth(df , locations = 'Country' , locationmode='country names',color='Confirmed'
,animation_frame='Date')
fig.update_layout(title_text = 'Global Spread of COVID-19')
fig.show()
Die weltweiten Todesfälle von COVID19.
Ab dem ersten Tag der Pandemie.
fig = px.choropleth(df , locations = 'Country' , locationmode='country names',color='Deaths'
,animation_frame='Date')
fig.update_layout(title_text = 'Global Deaths of COVID-19')
fig.show()
Die Visualizierung wie intensiv die Covid19-Übertragung in China war. Dafür wird die maximale Infektionsrate bzw. maximale Anzahl neu infizierter Fälle über 24 Stunden benutzt.
Am 2020-01-22 sind 548 Fälle, 24 Stunden später am 2020-02-643 sind 643 Fälle bestätigt. In 24 Stunden sind 95 neue Fälle dazu gekommen.
df_china = df[df.Country == 'China']
df_china.head()
Berechung für Infektionsrate in China über die gesamte Periode
df_china = df_china[['Date','Confirmed']]
df_china.head()
df_china['Infection Rate'] = df_china['Confirmed'].diff()
df_china.head()
Visualisierung von der Infektionsrate in China:
Die blaue Linie ist die kumulative Anzahl der bestätigten Fällen auf der roten Linie ist die Infektionsrate.
Die Größte Zahl der Neuinfektionen war am 2020-02-13 mit 15136.0 neu Fälle.
px.line(df_china , x = 'Date' , y = ['Confirmed','Infection Rate'])
Diese Zahl beschreibet, wie massiv COVID19 sich in China verbreitet, also in einem Tag wurden 15136.0 neu Fälle gemeldet
df_china['Infection Rate'].max()
Maximum Infektionsrate alle andere Länder
df.head()
Berechung für jedes Land mit dem maximale Infektionrat
MIR sind die Infektionsrate.
countries = list(df['Country'].unique())
max_infection_rates = []
for c in countries :
MIR = df[df.Country == c].Confirmed.diff().max()
max_infection_rates.append(MIR)
Erzeugung von einem neuen Dataframe mit Ländername und maximalen Infektionsrate
df_MIR = pd.DataFrame()
df_MIR['Country'] = countries
df_MIR['Max Infection Rate'] = max_infection_rates
df_MIR.head()
Ein Balkendiagramm wird gezeichnet, um den Unterschied zwischen verschiedenen Ländern in Bezug auf die maximale Infektionsrate zu zeigen.
px.bar(df_MIR, x='Country' , y='Max Infection Rate', color = 'Country' , title ='Global Maximum infection rate', log_y=True)
Wie beeinflusst die COVID19 nationale Sperren in Italien die Verbreitung des Virus?
Am 9. März 2020 hat die italienische Regierung unter Premierminister Giuseppe Conte als Reaktion auf die wachsende COVID-19-Pandemie im Land eine nationale Quarantäne verhängt, die die Bewegungsfreiheit der Bevölkerung mit Ausnahme von Notwendigkeiten, Arbeits- und Gesundheitsbedingungen einschränkte source
italy_lockdown_start_date = '2020-03-09'
italy_lockdown_a_month_later = '2020-04-09'
df.head()
Ein Dataframe nur mit Daten aus Italien
df_italy = df[df.Country == 'Italy']
df_italy.head()
Berechung der Infenkitionrate aus Italien
df_italy['Infection Rate'] = df_italy.Confirmed.diff()
df_italy.head()
Visualisierung mit einem Plot-Liniendiagramm
Einige Monate nach dem Lockdow in Italien am 23.06.2020 wurde der niedriger Infenktionsrat von 113 gezeigt.
fig = px.line(df_italy , x = 'Date' , y = 'Infection Rate' , title = "Before and After Lockdown in Italy")
fig.add_shape(
dict(
type="line",
x0=italy_lockdown_start_date,
y0=0,
x1=italy_lockdown_start_date,
y1= df_italy['Infection Rate'].max(),
line = dict(color='red' , width=2)
)
)
fig.add_annotation(
dict(
x = italy_lockdown_start_date,
y = df_italy['Infection Rate'].max(),
text = 'starting date of the lockdown'
)
)
fig.add_shape(
dict(
type="line",
x0=italy_lockdown_a_month_later,
y0=0,
x1=italy_lockdown_a_month_later,
y1= df_italy['Infection Rate'].max(),
line = dict(color='orange' , width=2)
)
)
fig.add_annotation(
dict(
x = italy_lockdown_a_month_later,
y = 0,
text = 'a month later'
)
)
df_italy.head()
Eine Spalte für Sterberate wurde in einen neuen Array berechnet.
df_italy['Deaths Rate'] = df_italy.Deaths.diff()
df_italy.head()
Liniendiagramm, um die Auswirkungen der nationalen Sperren von COVID19 auf die Ausbreitung des Virus und die Sterblichkeitsrate zu vergleichen
fig = px.line(df_italy,x='Date',y=['Infection Rate','Deaths Rate'])
fig.show()
Die Zahl der Todesfälle ist viel niedriger als die Zahl der bestätigten Fälle.
Um sie besser zu vergleichen werden die Zahlen normalisieren, also jeden Wert wird zwischen null und eins sein.
df_italy['Infection Rate'] = df_italy['Infection Rate']/df_italy['Infection Rate'].max()
df_italy['Deaths Rate'] = df_italy['Deaths Rate']/df_italy['Deaths Rate'].max()
Liniendiagramm mit normalisierten Zahlen.
Nach dem Liniendiagramm ist die Totesrate nach dem Lockdow drastisch abgestiegen, im Vergleich mit der Zeit ohne Lockdow
Die COVID19-Lockdown war in Italien wirksam.
fig = px.line(df_italy, x='Date', y=['Infection Rate','Deaths Rate'])
fig.add_shape(
dict(
type="line",
x0=italy_lockdown_start_date,
y0=0,
x1=italy_lockdown_start_date,
y1= df_italy['Infection Rate'].max(),
line = dict(color='black' , width=2)
)
)
fig.add_annotation(
dict(
x = italy_lockdown_start_date,
y = df_italy['Infection Rate'].max(),
text = 'starting date of the lockdown'
)
)
fig.add_shape(
dict(
type="line",
x0=italy_lockdown_a_month_later,
y0=0,
x1=italy_lockdown_a_month_later,
y1= df_italy['Infection Rate'].max(),
line = dict(color='orange' , width=2)
)
)
fig.add_annotation(
dict(
x = italy_lockdown_a_month_later,
y = 0,
text = 'a month later'
)
)